package com.overlord.im.server.message.entity.enums;

import com.baomidou.mybatisplus.core.enums.IEnum;

import java.io.Serializable;

/**
 * @author wuwei
 * @className MessageStatus
 * @description
 * @date 2020/6/1 17:05
 **/
public enum MessageStatus implements IEnum {
    /**
     * 客户端发送消息
     */
    MSG_R(0),
    /**
     * 服务端确认消息接收
     */
    MSG_A(1),
    /**
     * 服务端消息发送
     * 至目的
     */
    MSG_N(3),
    /**
     * 目的客户端确认接收消息
     */
    ACK_R(4),
    /**
     * 服务端确认目的客户端已接收
     */
    ACK_A(5),
    /**
     * 服务端通知源客户端消息到达
     */
    ACK_N(6),
    /**
     * 拉取离线消息
     */
    OFFLINE_R(7),
    /**
     * 已收到离线消息
     */
    OFFLINE_A(8),
    /**
     * 收到OFFLINE_A后通知服务端删除消息
     */
    OFFLINE_ACK_R(9);

    private int code;

    MessageStatus(int code) {
        this.code = code;
    }

    public static MessageStatus fromCode(int code) {
        MessageStatus[] values = MessageStatus.values();
        for (MessageStatus value : values) {
            if (value.code == code) {
                return value;
            }
        }
        return null;
    }

    @Override
    public Serializable getValue() {
        return code;
    }
}
